From f031f8cfe17e127181da7eb27829bc1135e44263 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Fri, 9 Jul 2021 03:49:55 +0200 Subject: [PATCH] debian/patches: Initialize the textbtree tags counting causing s390x failures --- debian/patches/series | 1 + ...lize-to-zero-the-tags-counting-array.patch | 40 +++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 debian/patches/textbtree-Initialize-to-zero-the-tags-counting-array.patch diff --git a/debian/patches/series b/debian/patches/series index 4848cf1753..ce7ff7a1b5 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,5 +1,6 @@ reftest_compare_surfaces-Report-how-much-the-images-diffe.patch reftests-Allow-minor-differences-to-be-tolerated.patch build-Get-typelib-dir-dynamically-using-gobject-introspec.patch +textbtree-Initialize-to-zero-the-tags-counting-array.patch debian/Disable-web-fonts-for-now.patch debian/templates-Remove-html5shiv.patch diff --git a/debian/patches/textbtree-Initialize-to-zero-the-tags-counting-array.patch b/debian/patches/textbtree-Initialize-to-zero-the-tags-counting-array.patch new file mode 100644 index 0000000000..c89b7e4f24 --- /dev/null +++ b/debian/patches/textbtree-Initialize-to-zero-the-tags-counting-array.patch @@ -0,0 +1,40 @@ +From: =?utf-8?b?Ik1hcmNvIFRyZXZpc2FuIChUcmV2acOxbyki?= +Date: Fri, 9 Jul 2021 03:34:40 +0200 +Subject: textbtree: Initialize to zero the tags counting array + +We're using the tag contents array to count the number of invisible tags +set but we always increase it without being initialized. + +This may lead to unexpected behavior when traversing them and it's +causing a reliable failure in the textiter tests under s390x. + +So, memset that area content to 0 once allocated. It's not needed to do +the same for the tags themselves as we always assign them. + + Conditional jump or move depends on uninitialised value(s) + at 0x4CFAA00: _gtk_text_btree_char_is_invisible (gtktextbtree.c:2569) + by 0x4B8A1BB: find_visible_by_log_attrs (gtktextiter.c:3244) + by 0x10E93D: check_backward_visible_word_start (textiter.c:484) + by 0x10E93D: test_visible_word_boundaries (textiter.c:523) + by 0x533288F: g_test_run_suite (in /usr/lib/s390x-linux-gnu/libglib-2.0.so.0) + by 0x53328E7: g_test_run (in /usr/lib/s390x-linux-gnu/libglib-2.0.so.0) + by 0x109CC1: main (textiter.c:807) + +Origin: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/3740 +--- + gtk/gtktextbtree.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/gtk/gtktextbtree.c b/gtk/gtktextbtree.c +index 0acc023..91ab335 100644 +--- a/gtk/gtktextbtree.c ++++ b/gtk/gtktextbtree.c +@@ -2483,6 +2483,8 @@ _gtk_text_btree_char_is_invisible (const GtkTextIter *iter) + tagCnts = g_alloca (sizeof (int) * numTags); + tags = g_alloca (sizeof (GtkTextTag *) * numTags); + ++ memset (tagCnts, 0, sizeof (int) * numTags); ++ + /* + * Record tag toggles within the line of indexPtr but preceding + * indexPtr. -- 2.30.2